package com.imti.mall.product.mapper;

import com.imti.mall.model.pms.pojo.PmsProductCategory;
import org.apache.ibatis.jdbc.SQL;

import java.util.Map;

public class PmsProductCategoryDynaSqlProvider {

    /**
     * 添加Recycle表sql语句的方法
     * @param pmsProductCategory
     * @return
     */
    public String addPmsProductCategory(final PmsProductCategory pmsProductCategory){
        return new SQL(){
            {
                INSERT_INTO("pms_product_category");
                if(pmsProductCategory.getParentId()!=null){
                    VALUES("parent_id", "#{parentId}");
                }
                if(pmsProductCategory.getName()!=null){
                    VALUES("name", "#{name}");
                }
                if(pmsProductCategory.getLevel()!=null){
                    VALUES("level", "#{level}");
                }
                if(pmsProductCategory.getProductCount()!=null){
                    VALUES("product_count", "#{productCount}");
                }
                if(pmsProductCategory.getProductUnit()!=null){
                    VALUES("product_unit", "#{productUnit}");
                }
                if(pmsProductCategory.getNavStatus()!=null){
                    VALUES("nav_status", "#{navStatus}");
                }
                if(pmsProductCategory.getShowStatus()!=null){
                    VALUES("show_status", "#{showStatus}");
                }
                if(pmsProductCategory.getSort()!=null){
                    VALUES("sort", "#{sort}");
                }
                if(pmsProductCategory.getIcon()!=null){
                    VALUES("icon", "#{icon}");
                }
                if(pmsProductCategory.getKeywords()!=null){
                    VALUES("keywords", "#{keywords}");
                }
                if(pmsProductCategory.getDescription()!=null){
                    VALUES("description", "#{description}");
                }
                if(pmsProductCategory.getSort()!=null){
                    VALUES("sort", "#{sort}");
                }
            }
        }.toString();
    }


    /**
     * 修改商品分类表sql语句的方法
     * @param pmsProductCategory
     * @return
     */
    public String updatePmsProductCategory(final PmsProductCategory pmsProductCategory){
        return new SQL(){
            {
                UPDATE(" pms_product_category ");
                if(pmsProductCategory.getParentId()!=null){
                    SET(" parent_id=#{parentId} ");
                }
                if(pmsProductCategory.getName()!=null){
                    SET(" name=#{name} ");
                }
                if(pmsProductCategory.getLevel()!=null){
                    SET(" level=#{level} ");
                }
                if(pmsProductCategory.getProductCount()!=null){
                    SET(" product_count=#{productCount} ");
                }
                if(pmsProductCategory.getProductUnit()!=null){
                    SET(" product_unit=#{productUnit} ");
                }
                if(pmsProductCategory.getNavStatus()!=null){
                    SET(" nav_status=#{navStatus} ");
                }
                if(pmsProductCategory.getShowStatus()!=null){
                    SET(" show_status=#{showStatus} ");
                }
                if(pmsProductCategory.getSort()!=null){
                    SET(" sort=#{sort} ");
                }
                if(pmsProductCategory.getIcon()!=null){
                    SET(" icon=#{icon} ");
                }
                if(pmsProductCategory.getKeywords()!=null){
                    SET(" keywords=#{keywords} ");
                }
                if(pmsProductCategory.getDescription()!=null){
                    SET(" description=#{description} ");
                }
                if(pmsProductCategory.getSort()!=null){
                    SET(" sort=#{sort} ");
                }
                WHERE(" id=#{id} ");
            }
        }.toString();
    }

    /**
     * 查询商品分页的列表+详情
     * @param map
     * @return
     */
    public String findPmsProductCategory(Map<String,Object> map){
        return new SQL(){
            {
                SELECT(" id,parent_id,NAME,LEVEL,product_count,product_unit,nav_status,show_status,sort,icon,keywords,description ");
                FROM(" pms_product_category ");
                StringBuffer sb=new StringBuffer();
                PmsProductCategory pmsProductCategory= (PmsProductCategory) map.get("pmsProductCategory");
                if(pmsProductCategory!=null) {
                    //按照分类级别查找
                    if (pmsProductCategory.getLevel()!= null) {
                        sb.append(" and  LEVEL=#{pmsProductCategory.level}");
                    }
                    //根据上级分类的编号进行查询
                    if (pmsProductCategory.getParentId() != null) {
                        sb.append(" and parent_id=#{pmsProductCategory.parentId}");
                    }
                }
                WHERE(" 1=1 "+sb.toString());
                ORDER_BY(" sort DESC");
                LIMIT(" #{pageNum},#{pageSize} ");
            }
        }.toString();
    }

    /**
     * 查询总条数
     * @param pmsProductCategory
     * @return
     */
    public String getPmsProductCategory(final PmsProductCategory pmsProductCategory){
        return new SQL(){
            {
                SELECT("COUNT(*)");
                FROM("pms_product_category");
                StringBuffer sb=new StringBuffer();
                if(pmsProductCategory!=null) {
                    //按照分类级别查找
                    if (pmsProductCategory.getLevel()!= null) {
                        sb.append("and  LEVEL=#{level}");
                    }
                    //根据上级分类的编号进行查询
                    if (pmsProductCategory.getParentId() != null) {
                        sb.append("and parent_id=#{parentId}");
                    }
                }
                WHERE(" 1=1 "+sb.toString());
            }
        }.toString();
    }


}
